package com.kancy.xml.entity;

import javax.xml.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;

/**使用了XmlType 需要指定所有字段顺序*/
@XmlType(propOrder = {
        "properties","services"
})
/**Xml文档的根元素*/
@XmlRootElement(name="task")
/**
 * 当没有指定@XmlAccessorType注解时，@XmlElement 和@XmlAttribute 只能放在get/set方法上否则会报错；
 * 当有@XmlAccessorType注解时，可以在字段上添加@XmlElement，@XmlAttribute，@XmlJavaTypeAdapter做说明
 */
public class Task {

    private List<Property> properties = new ArrayList<Property>();

    private List<Service> services = new ArrayList<Service>();


    /**对于数组或集合（即包含多个元素的成员变量），生成一个包装该数组或集合的XML元素（称为包装器）。*/
    @XmlElementWrapper(name="properties")
    @XmlElement(name="property")
    public List<Property> getProperties() {
        return properties;
    }

    public void setProperties(List<Property> properties) {
        this.properties = properties;
    }

    /**对于数组或集合（即包含多个元素的成员变量），生成一个包装该数组或集合的XML元素（称为包装器）。*/
    @XmlElementWrapper(name="services")
    @XmlElement(name="service")
    public List<Service> getServices() {
        return services;
    }

    public void setServices(List<Service> services) {
        this.services = services;
    }

    @Override
    public String toString() {
        return "Task{\n  " +
                "properties=" + properties +
                ", \n  services=" + services +
                "\n}";
    }
}
